package com.chenchao.annotation;

import java.lang.annotation.*;

/**
 * @encoding : UTF-8
 * @Time : 2020/12/2 10:52
 * @Author : Chen Chao
 * @File : javaSE.com.chenchao.annotation.Test01.java
 * @Software : IntelliJ IDEA
 * @since : 1.8
 */
public class Test01 {
    /*注解使用显示赋值的方法,使用时末尾不加分号*/
    @MyAnnotation(value = "value",animal = {"cat"})
    public static void main(String[] args) {
    }
    /*只给value属性赋值时可以省略*/
    @MyAnnotation("value")
    public static void test02(){
    }
}
/*定义一个注解*/
/*@Target标识注解的作用对象*/
@Target(value = {ElementType.METHOD,ElementType.FIELD})
/*@Retention标识注解的作用时间段 RUNTIME> CLASS>SOURCE*/
/*这三个RetentionPolicy是包含关系*/
@Retention(value= RetentionPolicy.RUNTIME)
/*标识是否将注解生成在javaDoc中*/
@Documented
/*标识子类是否可以继承父类的注解*/
@Inherited
@interface MyAnnotation{
    /*注解参数：数据类型+数据名称+();*/
    /*注意，这里不是方法*/
    /*如果没有给定初始值，使用时就必须给注解赋值*/
    String name()default "";
    /*只给value属性赋值时可以省略*/
    String value()default "";
    String [] animal() default {"dog","fish"};
}
